// Problem 033: Digit cancelling fractions
// The fraction 49/98 is a curious fraction, as an inexperienced mathematician in attempting to simplify it may incorrectly believe that 49/98 = 4/8, which is correct, is obtained by cancelling the 9s.
// We shall consider fractions like, 30/50 = 3/5, to be trivial examples.
// There are exactly four non-trivial examples of this type of fraction, less than one in value, and containing two digits in the numerator and denominator.
// If the product of these four fractions is given in its lowest common terms, find the value of the denominator.

package main

import (
	"fmt"
)

func p033() {
	numerator, denominator := 1, 1
	for ab := 12; ab <= 98; ab++ {
		if ab%11 == 0 || ab%10 == 0 {
			continue
		}
		a, b := ab/10, ab%10
		for c := 1; c < 10; c++ {
			if bc := b*10 + c; ab < bc && ab*c == a*bc {
				numerator *= a
				denominator *= c
			}
			if ca := (c*10 + a); ab < ca && ab*c == b*ca {
				numerator *= b
				denominator *= c
			}
		}
	}
	fmt.Println("Problem 033:", denominator/numerator)
}
